import { defineStore } from "pinia";

//定义一个模块化的小仓库
//defineStore 方法接受两个参数，第一个参数是模块名称，第二个参数是仓库的配置
//defineStore返回的是一个函数，当函数调用的时候，能够拿到内部的内容

const useCountState = defineStore("count", {
  state: () => {
    return {
      num: 0,
    };
  },
  actions: {
    //actions中的方法是用来修改数据的，接收的参数是调用这个方法时传递的参数
    increment() {
      //actions方法内部使用this拿到state数据进行修改
      this.num++;
    },
    incrementN(n: number) {
      this.num += n;
    },
  },
  getters: {
    //在getters中需要限制返回值类型
    doubleNum(): number {
      return this.num * 2;
    },
  },
});

export default useCountState;
